home *** CD-ROM | disk | FTP | other *** search
/ InterCD 2001 November / november_2001.iso / Browsers / Netscape 6.1 / browser.xpi / install.js
Encoding:
JavaScript  |  2001-07-27  |  22.3 KB  |  609 lines

  1. // this function verifies disk space in kilobytes
  2. function verifyDiskSpace(dirPath, spaceRequired)
  3. {
  4.   var spaceAvailable;
  5.  
  6.   // Get the available disk space on the given path
  7.   spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
  8.  
  9.   // Convert the available disk space into kilobytes
  10.   spaceAvailable = parseInt(spaceAvailable / 1024);
  11.  
  12.   // do the verification
  13.   if(spaceAvailable < spaceRequired)
  14.   {
  15.     logComment("Insufficient disk space: " + dirPath);
  16.     logComment("  required : " + spaceRequired + " K");
  17.     logComment("  available: " + spaceAvailable + " K");
  18.     return(false);
  19.   }
  20.  
  21.   return(true);
  22. }
  23.  
  24. // this function deletes a file if it exists
  25. function deleteThisFile(dirKey, file)
  26. {
  27.   var fFileToDelete;
  28.  
  29.   fFileToDelete = getFolder(dirKey, file);
  30.   logComment(file + " file: " + fFileToDelete);
  31.   if(File.exists(fFileToDelete))
  32.   {
  33.     fileDelete(fFileToDelete);
  34.     return(true);
  35.   }
  36.   else
  37.     return(false);
  38. }
  39.  
  40. // this function deletes a folder (recursively) if it exists
  41. function deleteThisFolder(dirKey, folder)
  42. {
  43.   var fToDelete;
  44.  
  45.   fToDelete = getFolder(dirKey, folder);
  46.   logComment(folder + " folder: " + fToDelete);
  47.   if(File.exists(fToDelete))
  48.   {
  49.     File.dirRemove(fToDelete, true);
  50.     return(true);
  51.   }
  52.   else
  53.     return(false);
  54. }
  55.  
  56. // OS type detection
  57. // which platform?
  58. function getPlatform()
  59. {
  60.   var platformStr;
  61.   var platformNode;
  62.  
  63.   if('platform' in Install)
  64.   {
  65.     platformStr = new String(Install.platform);
  66.  
  67.     if (!platformStr.search(/^Macintosh/))
  68.       platformNode = 'mac';
  69.     else if (!platformStr.search(/^Win/))
  70.       platformNode = 'win';
  71.     else
  72.       platformNode = 'unix';
  73.   }
  74.   else
  75.   {
  76.     var fOSMac  = getFolder("Mac System");
  77.     var fOSWin  = getFolder("Win System");
  78.  
  79.     logComment("fOSMac: "  + fOSMac);
  80.     logComment("fOSWin: "  + fOSWin);
  81.  
  82.     if(fOSMac != null)
  83.       platformNode = 'mac';
  84.     else if(fOSWin != null)
  85.       platformNode = 'win';
  86.     else
  87.       platformNode = 'unix';
  88.   }
  89.  
  90.   return platformNode;
  91. }
  92.  
  93. function updateWinReg4Ren8dot3() 
  94. {
  95.   var fProgram      = getFolder("Program");
  96.   var fTemp         = getFolder("Temporary");
  97.  
  98.   //Notes:
  99.   // can't use a double backslash before subkey - Windows already puts it in.            
  100.   // subkeys have to exist before values can be put in.
  101.   var subkey;  // the name of the subkey you are poking around in
  102.   var valname; // the name of the value you want to look at
  103.   var value;   // the data in the value you want to look at.
  104.   var winreg = getWinRegistry() ;
  105.  
  106.   if(winreg != null) 
  107.   {
  108.     // Here, we get the current version.
  109.     winreg.setRootKey(winreg.HKEY_CURRENT_USER) ;  // CURRENT_USER
  110.     subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce" ;
  111.  
  112.     winreg.createKey(subkey,"");
  113.     valname = "ren8dot3";
  114.     value   = fProgram + "ren8dot3.exe " + fTemp + "ren8dot3.ini";
  115.     err     = winreg.setValueString(subkey, valname, value);
  116.   }
  117. }
  118.  
  119. function prepareRen8dot3(listLongFilePaths)
  120. {
  121.   var fTemp                 = getFolder("Temporary");
  122.   var fProgram              = getFolder("Program");
  123.   var fRen8dot3Ini          = getWinProfile(fTemp, "ren8dot3.ini");
  124.   var bIniCreated           = false;
  125.   var fLongFilePath;
  126.   var sShortFilePath;
  127.  
  128.   if(fRen8dot3Ini != null)
  129.   {
  130.     for(i = 0; i < listLongFilePaths.length; i++)
  131.     {
  132.       fLongFilePath   = getFolder(fProgram, listLongFilePaths[i]);
  133.       sShortFilePath  = File.windowsGetShortName(fLongFilePath);
  134.       if(sShortFilePath)
  135.       {
  136.         fRen8dot3Ini.writeString("rename", sShortFilePath, fLongFilePath);
  137.         bIniCreated = true;
  138.       }
  139.     }
  140.  
  141.     if(bIniCreated)
  142.       updateWinReg4Ren8dot3() ;
  143.   }
  144.  
  145.   return(0);
  146. }
  147.  
  148. function registerProgramFolderKey(winreg, fFolderPath)
  149. {
  150.   var subkey;
  151.   var valname;
  152.   var value;
  153.   var err;
  154.  
  155.   /* set the Program Folder Path in the Mozilla key in the Windows Registry */
  156.   subkey  = "SOFTWARE\\Netscape";
  157.   winreg.createKey(subkey,"");
  158.  
  159.   valname = "CurrentVersion";
  160.   subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  161.   winreg.createKey(subkey,"");
  162.  
  163.   valname = "CurrentVersion";
  164.   value   = "6.1 (en)";
  165.   err     = winreg.setValueString(subkey, valname, value);
  166.  
  167.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)";
  168.   winreg.createKey(subkey,"");
  169.  
  170.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)\\Main";
  171.   winreg.createKey(subkey,"");
  172.  
  173.   valname = "Program Folder Path";
  174.   value   = fFolderPath;
  175.   err     = winreg.setValueString(subkey, valname, value);
  176. }
  177.  
  178. function createShortcuts() 
  179. {
  180.   var subkey;
  181.   var valname;
  182.   var szStartMenuPrograms;
  183.   var szStartMenu;
  184.   var szFolderDesktop;
  185.   var szFolderQuickLaunch;
  186.   var szFolderSendTo;
  187.   var winreg;
  188.   var fWindows;
  189.   var fTemp;
  190.   var fProgram;
  191.   var fileExe;
  192.   var scExeDesc;
  193.   var scProfileDesc;
  194.   var scNSSmartUpdateDesc;
  195.   var scNSSmartUpdateDescParam;
  196.   var scProfileDescParam;
  197.   var scFolderName;
  198.   var szStartupFolder;
  199.   var fFolderDesktop;
  200.   var fFolderPath;
  201.   var fFolderPathStr;
  202.   var is_winnt;
  203.   var szCurrentVersion;
  204.  
  205.   winreg                    = getWinRegistry();
  206.   fWindows                  = getFolder("Windows");
  207.   fProgram                  = getFolder("Program");
  208.   fTemp                     = fProgram + "Netscp6.exe";
  209.   fileExe                   = getFolder("file:///", fTemp);
  210.   scExeDesc                 = "Netscape 6";
  211.   scProfileDesc             = "Profile Manager";
  212.   scNSSmartUpdateDesc       = "Netscape SmartUpdate";
  213.   scNSSmartUpdateDescParam  = "http://home.netscape.com/smartupdate/index.html?cp=start6_1";
  214.   scProfileDescParam        = "-ProfileManager";
  215.   scFolderName              = "Netscape 6";
  216.   if(winreg != null) 
  217.   {
  218.     /* determine if the script is running under NT or not */
  219.     winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  220.     subkey              = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
  221.     valname             = "CurrentVersion";
  222.     szCurrentVersion    = winreg.getValueString(subkey, valname);
  223.     logComment("szCurrentVersion: " + szCurrentVersion);
  224.     if((szCurrentVersion == "") || (szCurrentVersion == null))
  225.     {
  226.       is_winnt = false;
  227.     }
  228.     else
  229.     {
  230.       is_winnt = true;
  231.     }
  232.  
  233.     logComment("is_winnt value: " + is_winnt);
  234.     if(!is_winnt || restrictedAccess)
  235.     {
  236.       winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  237.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  238.       valname             = "Programs";
  239.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  240.       valname             = "Start Menu";
  241.       szStartMenu         = winreg.getValueString(subkey, valname);
  242.       valname             = "Desktop";
  243.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  244.       valname             = "Startup";
  245.       szStartupFolder     = winreg.getValueString(subkey, valname);
  246.     }
  247.     else
  248.     {
  249.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  250.       subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  251.       valname             = "Common Programs";
  252.       szStartMenuPrograms = winreg.getValueString(subkey, valname);
  253.       valname             = "Common Start Menu";
  254.       szStartMenu         = winreg.getValueString(subkey, valname);
  255.       valname             = "Common Desktop";
  256.       szFolderDesktop     = winreg.getValueString(subkey, valname);
  257.       valname             = "Common Startup";
  258.       szStartupFolder     = winreg.getValueString(subkey, valname);
  259.     }
  260.  
  261.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  262.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders";
  263.     valname             = "SendTo";
  264.     szFolderSendTo      = winreg.getValueString(subkey, valname);
  265.  
  266.     subkey              = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\GrpConv\\MapGroups";
  267.     valname             = "Quick Launch";
  268.     szFolderQuickLaunch = winreg.getValueString(subkey, valname);
  269.  
  270.     subkey              = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)\\Main";
  271.     valname             = "Program Folder Path";
  272.     fFolderPathStr      = winreg.getValueString(subkey, valname);
  273.     if((fFolderPathStr == "") || (fFolderPathStr == null))
  274.     {
  275.       fTemp       = szStartMenuPrograms + "\\" + scFolderName;
  276.       fFolderPath = getFolder("file:///", fTemp);
  277.     }
  278.     else
  279.     {
  280.       /* convert the path string to a path folder object */
  281.       fFolderPath = getFolder("file:///", fFolderPathStr);
  282.     }
  283.     /* convert the path string to a path folder object */
  284.     fFolderDesktop = getFolder("file:///", szFolderDesktop);
  285.  
  286.     logComment("Folder StartMenuPrograms: " + szStartMenuPrograms);
  287.     logComment("Folder StartMenu        : " + szStartMenu);
  288.     logComment("Folder FolderDesktop    : " + szFolderDesktop);
  289.     logComment("Folder FolderSendTo     : " + szFolderSendTo);
  290.     logComment("Folder FolderQuickLaunch: " + szFolderQuickLaunch);
  291.     logComment("fileExe                 : " + fileExe);
  292.     logComment("fFolderPath             : " + fFolderPath);
  293.     logComment("scExeDesc               : " + scExeDesc);
  294.     logComment("fProgram                : " + fProgram);
  295.  
  296.     /* explicitly create the fFolderPath even though the windowsShortcut function creates the folder.
  297.      * This is so that the folder creation gets logged for uninstall to remove it. */
  298.     if(!File.exists(fFolderPath))
  299.       File.dirCreate(fFolderPath);
  300.  
  301.     /* create the shortcuts */
  302.     File.windowsShortcut(fileExe, fFolderDesktop, scExeDesc,           fProgram,  "",                       fileExe, 0);
  303.     File.windowsShortcut(fileExe, fFolderPath,    scExeDesc,           fProgram,  "",                       fileExe, 0);
  304.     File.windowsShortcut(fileExe, fFolderPath,    scProfileDesc,       fProgram,  scProfileDescParam,       fileExe, 0);
  305.     File.windowsShortcut(fileExe, szStartMenu,    scNSSmartUpdateDesc, fProgram,  scNSSmartUpdateDescParam, fileExe, 0);
  306.  
  307.     if(!restrictedAccess)
  308.     {
  309.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  310.       registerProgramFolderKey(winreg, fFolderPath);
  311.     }
  312.  
  313.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  314.     registerProgramFolderKey(winreg, fFolderPath);
  315.     /* setup turbo mode */
  316.  
  317.     logComment( "Windows Shortcut: " + szStartupFolder + "\\Netscp6.exe" );
  318.  
  319.     subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)\\Setup";
  320.     valname = "browserargs";
  321.     regvalue = winreg.getValueString(subkey, valname);
  322.     if (regvalue && regvalue != undefined && regvalue.length != 0) {
  323.         var value = new String(regvalue);
  324.         var index = value.indexOf("turbo");
  325.         if (index != -1) {
  326.             var index2 = value.indexOf("=", index);
  327.             if (index2 != -1) {
  328.                 var turboarg = value.slice(index2 + 1, index2 + 2);
  329.                  fFolderPath = getFolder("file:///", szStartupFolder);
  330.                  if (turboarg == "y" || turboarg == "Y") {
  331.                     /* add shortcut in the startup folder if doesn't exist */
  332.  
  333.                     logComment("Adding Quick Launch shortcut to Windows startup folder\n");
  334.                     File.windowsShortcut(fileExe, fFolderPath, "Netscp6.exe", fProgram, "-turbo", fileExe, 0); 
  335.                 } else {
  336.                     /* remove shortcut from the startup folder */
  337.  
  338.                     basename = "Netscp6.exe"
  339.                     fTemp = fFolderPath + basename + ".lnk";
  340.                     fFolderPath = getFolder("file:///", fTemp);
  341.                     if (File.exists(fFolderPath)) { 
  342.                         logComment("Removing Quick Launch shortcut from Windows startup folder\n");
  343.                         fileDelete(fFolderPath);
  344.                     } 
  345.                 }
  346.             }
  347.         }
  348.     }
  349.   }
  350.   else
  351.   {
  352.     logComment("winreg is null");
  353.   }
  354. }
  355.  
  356. function registerMainKeys(winreg)
  357. {
  358.   var subkey;  //the name of the subkey you are poking around in
  359.   var valname; //the name of the value you want to look at
  360.   var value;   //the data in the value you want to look at.
  361.   var err;
  362.  
  363.   subkey  = "SOFTWARE\\Netscape";
  364.   winreg.createKey(subkey,"");
  365.  
  366.   subkey  = "SOFTWARE\\Netscape\\Netscape 6";
  367.   winreg.createKey(subkey,"");
  368.  
  369.   valname = "CurrentVersion";
  370.   value   = "6.1 (en)";
  371.   err     = winreg.setValueString(subkey, valname, value);
  372.  
  373.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)";
  374.   winreg.createKey(subkey,"");
  375.  
  376.   subkey  = "SOFTWARE\\Netscape\\Netscape 6\\6.1 (en)\\Main";
  377.   winreg.createKey(subkey,"");
  378.  
  379.   valname = "Install Directory";
  380.   value   = fProgram;
  381.   err     = winreg.setValueString(subkey, valname, value);
  382.  
  383.   // The following keys are required to be created to supply information
  384.   // about the location of the Gecko Embedded Client to 3rd party apps.
  385.   // "SOFTWARE\\Mozilla" must not be localized!
  386.   subkey  = "SOFTWARE\\Mozilla\\Netscape 6 6.1";
  387.   winreg.createKey(subkey,"");
  388.  
  389.   subkey  = "SOFTWARE\\Mozilla\\Netscape 6 6.1\\Extensions";
  390.   winreg.createKey(subkey,"");
  391.  
  392.   valname = "Components";
  393.   value   = fProgram + "Components";
  394.   err     = winreg.setValueString(subkey, valname, value);
  395.  
  396.   valname = "Plugins";
  397.   value   = fProgram + "Plugins";
  398.   err     = winreg.setValueString(subkey, valname, value);
  399.  
  400.   subkey  = "SOFTWARE\\Mozilla\\Netscape 6 6.1\\bin";
  401.   winreg.createKey(subkey,"");
  402.  
  403.   valname = "PathToExe";
  404.   value   = fProgram + "Netscp6.exe";
  405.   err     = winreg.setValueString(subkey, valname, value);
  406. }
  407.  
  408. function updateWinReg()
  409. {
  410.   //Notes:
  411.   // can't use a double backslash before subkey - Windows already puts it in.
  412.   // subkeys have to exist before values can be put in.
  413.   var winreg = getWinRegistry();
  414.   var subkey;  //the name of the subkey you are poking around in
  415.   var valname; //the name of the value you want to look at
  416.   var value;   //the data in the value you want to look at.
  417.   var err;
  418.   var ikwDefined;
  419.  
  420.   if(winreg != null) 
  421.   {
  422.     /* This will check to see if the user has restricted access or not.
  423.      * It checks to see if HKEY_LOCALMACHINE\SOFTWARE is writable.  If
  424.      * it is, then access is not restricted.  This is only used to
  425.      * determine which Desktop, Programs, and Start Menu folders
  426.      * are to used: common or per user
  427.      */
  428.     restrictedAccess = false;
  429.     ikwDefined = typeof(winreg.isKeyWritable);
  430.     logComment("winreg.isKeyWritable(): " + ikwDefined);
  431.     if(ikwDefined == "function")
  432.     {
  433.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  434.       if(!winreg.isKeyWritable("SOFTWARE"))
  435.         restrictedAccess = true;
  436.     }
  437.  
  438.     logComment("restrictedAccess value: " + restrictedAccess);
  439.     if(!restrictedAccess)
  440.     {
  441.       winreg.setRootKey(winreg.HKEY_LOCAL_MACHINE);
  442.       registerMainKeys(winreg);
  443.  
  444.       // set the App Paths key here
  445.       subkey  = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Netscp6.exe";
  446.       winreg.createKey(subkey,"");
  447.       valname = "";
  448.       value   = fProgram + "Netscp6.exe";
  449.       err     = winreg.setValueString(subkey, valname, value);
  450.  
  451.       valname = "Path";
  452.       value   = fProgram;
  453.       err     = winreg.setValueString(subkey, valname, value);
  454.     }
  455.  
  456.     winreg.setRootKey(winreg.HKEY_CURRENT_USER);
  457.     registerMainKeys(winreg);
  458.   }
  459. }
  460.  
  461. function upgradeCleanup()
  462. {
  463.   // Obsolete files from Netscape 6.0 and Netscape 6.01 that
  464.   // need to be cleaned up.
  465.   deleteThisFile("Program",    "oji.dll");
  466.   deleteThisFile("Program",    "jsdom.dll");
  467.   deleteThisFile("Program",    "defaults/pref/psm-glue.js");
  468.   deleteThisFile("Program",    "defaults/wallet/URLFieldSchema.tbl");
  469.   deleteThisFile("Components", "gkhtml.dll");
  470.   deleteThisFile("Components", "mozucth.dll");
  471. }
  472.  
  473. // main
  474. var srDest;
  475. var err;
  476. var fProgram;
  477. var fWindowsSystem;
  478. var fileComponentRegStr;
  479. var fileComponentReg;
  480. var restrictedAccess;
  481.  
  482. // This list contains filenames that are long filenames ( > 8.3) critical during installation time.
  483. // This list is automatically generated during the build process.
  484. // The filenames should include paths relative to the Netscape 6 folder.
  485. // '/' must be used as path delimiters regardless of platform.
  486. var listLongFilePaths = ["chrome/content-packs.jar",
  487.                          "chrome/net2phone.jar",
  488.                          "components/accessibility.dll",
  489.                          "components/activation.dll",
  490.                          "components/embedcomponents.dll",
  491.                          "components/gkcontent.dll",
  492.                          "components/transformiix.dll",
  493.                          "components/xmlextras.dll",
  494.                          "ISimpleDOMDocumentMarshal.dll",
  495.                          "ISimpleDOMNodeMarshal.dll",
  496.                          "systemSignature.jar",
  497.                          "xpicleanup.exe"];
  498.  
  499. srDest = 17569;
  500. err    = initInstall("Netscape Navigator", "Browser", "6.10.0.2001072700"); 
  501. logComment("initInstall: " + err);
  502.  
  503. fProgram  = getFolder("Program");
  504. fWindowsSystem = getFolder("Win System");
  505. logComment("fProgram: " + fProgram);
  506.  
  507. if(verifyDiskSpace(fProgram, srDest))
  508. {
  509.   setPackageFolder(fProgram);
  510.  
  511.   // Ren8dot3 process needs to be done before any files have been installed
  512.   // (this includes the temp files during the prepare phase)
  513.   prepareRen8dot3(listLongFilePaths);
  514.  
  515.   err = addDirectory("",
  516.                      "6.10.0.2001072700",
  517.                      "bin",              // dir name in jar to extract 
  518.                      fProgram,           // Where to put this file (Returned from getFolder) 
  519.                      "",                 // subdir name to create relative to fProgram
  520.                      true);              // Force Flag 
  521.   logComment("addDirectory() of Program returned: " + err);
  522.  
  523.   // check return value
  524.   if(err == SUCCESS)
  525.   {
  526.     updateWinReg();
  527.     createShortcuts();
  528.     upgradeCleanup();
  529.     resetError();
  530.  
  531.     // register chrome
  532.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-platform/");
  533.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-platform/");
  534.  
  535.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global-region/");
  536.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator-region/");
  537.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor-region/");
  538.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator-region/");
  539.  
  540.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","toolkit.jar"),"content/global/");
  541.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/cookie/");
  542.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/wallet/");
  543.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","content-packs.jar"),"content/content-packs/");
  544.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/communicator/");
  545.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/editor/");
  546.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/navigator/");
  547.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","comm.jar"),"content/necko/");
  548.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/communicator/");
  549.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/editor/");
  550.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/global/");
  551.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/messenger/");
  552.     registerChrome(SKIN | DELAYED_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/navigator/");
  553.     registerChrome(SKIN | DELAYED_CHROME | SELECT_CHROME, getFolder("Chrome","modern.jar"),"skin/modern/aim/");
  554.     registerChrome(PACKAGE | DELAYED_CHROME, getFolder("Chrome","net2phone.jar"), "content/net2phone/");
  555.     registerChrome(CONTENT | DELAYED_CHROME, getFolder("Chrome","help.jar"),"content/help/");
  556.  
  557.  
  558.     /* Log files that are created after the installer is done, so they can be uninstalled */
  559.     logComment("Installing: "    + fProgram + "Xpcs Registry.dat");
  560.     logComment("Installing: "    + fProgram + "xpcom.log");
  561.     logComment("Create Folder: " + fProgram + "components");
  562.     logComment("Installing: "    + fProgram + "components\\xpti.dat");
  563.     logComment("Installing: "    + fProgram + "components\\xptitemp.dat");
  564.     logComment("Create Folder: " + fProgram + "chrome");
  565.     logComment("Installing: "    + fProgram + "chrome\\installed-chrome.txt");
  566.     logComment("Installing: "    + fProgram + "chrome\\all-locales.rdf");
  567.     logComment("Installing: "    + fProgram + "chrome\\all-packages.rdf");
  568.     logComment("Installing: "    + fProgram + "chrome\\all-skins.rdf");
  569.     logComment("Installing: "    + fProgram + "chrome\\user-locales.rdf");
  570.     logComment("Installing: "    + fProgram + "chrome\\user-skins.rdf");
  571.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo");
  572.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator");
  573.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor");
  574.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger");
  575.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator");
  576.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\communicator\\content");
  577.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\communicator\\content\\overlays.rdf");
  578.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\editor\\content");
  579.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\editor\\content\\overlays.rdf");
  580.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\messenger\\content");
  581.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\messenger\\content\\overlays.rdf");
  582.     logComment("Create Folder: " + fProgram + "chrome\\overlayinfo\\navigator\\content");
  583.     logComment("Installing: "    + fProgram + "chrome\\overlayinfo\\navigator\\content\\overlays.rdf");
  584.  
  585.     err = getLastError();
  586.     if (err == SUCCESS)
  587.     {
  588.         performInstall(); 
  589.         if (! ('buildID' in Install))
  590.         {
  591.             logComment("Running Pre-Mozilla 0.9.1");
  592.             initInstall("Post-install Cleanup Utility", "xpicleanup", "6.10.0.2001072700");
  593.             cleanupUtility = getFolder(fProgram, "xpicleanup.exe");
  594.             err = File.execute(cleanupUtility);
  595.             logComment("execute() returned: " + err);
  596.             err = performInstall();
  597.         }
  598.     }
  599.     else
  600.         cancelInstall(err);
  601.   }
  602.   else
  603.     cancelInstall(err);
  604. }
  605. else
  606.   cancelInstall(INSUFFICIENT_DISK_SPACE);
  607.  
  608. // end main
  609.